package com.example.onlinemusic.config;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: H_tao_X
 * Date: 2022-08-06
 * Time: 16:56
 */

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 表示当前类是一个配置类
 */
@Configuration
public class AppConfig implements WebMvcConfigurer {

    @Bean
    // 用于告诉方法，产生了一个 Bean 对象，然后这个 Bean 对象交给 Spring 管理
    // 产生这个Bean对象的方法Spring中只会调用一次，随后这个Spring将会将这个Bean放到自己的IOC容器中
    public BCryptPasswordEncoder getBCryptPasswordEncoder(){
        return new BCryptPasswordEncoder();
    }


    /**
     * 添加 拦截器：
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        // 登录只有才能访问其他的页面
        LoginInterceptor loginInterceptor = new LoginInterceptor();

        registry.addInterceptor(loginInterceptor)

             .addPathPatterns("/**")//添加拦截路径，这里表示拦截所有路径
                //下面表示不拦截这些内容
                .excludePathPatterns("/js/**.js")
                //排除images下所有的元素
                .excludePathPatterns("/images/**")
                .excludePathPatterns("/css/**.css")
                .excludePathPatterns("/fronts/**")
                .excludePathPatterns("/player/**")
                .excludePathPatterns("/login.html")
                .excludePathPatterns("/logon.html")
                //排除登录接口
                .excludePathPatterns("/user/logon")
                .excludePathPatterns("/user/login");

    }
}
